module.exports = function (grunt) {
  // 项目配置
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    // concat: { // 合并
    //   options: {
    //     separator: '/*分割*/;',
    //     banner: '/*测试*/',
    //     footer: '/*footer*/'
    //   },
    //   dist: {
    //     src: ['src/zepto.js', 'src/underscore.js', 'src/backbone.js'],
    //     dest: 'dest/libs.js'
    //   }
    // },
    // concat: { // 构建两个文件夹
    //   basic: {
    //     src: ['src/zepto.js'],
    //     dest: 'dest/basic.js'
    //   },
    //   extras: {
    //     src: ['src/underscore.js', 'src/backbone.js'],
    //     dest: 'dest/with_extras.js'
    //   }
    // },
    // concat: {
    //   basic_and_extras: {
    //     files: {
    //       'dist/basic.js': ['src/test.js', 'src/zepto.js'],
    //       'dist/with_extras.js': ['src/underscore.js', 'src/backbone.js']
    //     }
    //   }
    // },
    // jshint: {
    //   options: {
    //     '-W033': true
    //   },
    //   all: ['src/test.js']
    // },
    concat: {
      dist: {
        src: ['src/test01.js', 'src/test02.js'],
        dest: 'dist/output.js'
      }
    },
    jshint: {
      options: {
        '-W033': true 
      },
      pre: ['src/test01.js', 'src/test02.js'],
      after: ['dist/output.js']
    },
    // uglify: { // 压缩 
    //   options: {
    //     banner: '/*! <%= pkg.file %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
    //   },
    //   build: {
    //     src: 'src/<%=pkg.file %>.js',
    //     dest: 'dest/<%= pkg.file %>.min.js'
    //   }
    // },
    // uglify: {
    //   build: {
    //     src: 'dest/libs.js',
    //     dest: 'dest/libs.min.js'
    //   }
    // }
    // uglify: { // 先压缩再合并
    //   "my_target": {
    //     "files": {
    //       'dest/libs.min.js': ['src/zepto.js', 'src/underscore.js', 'src/backbone.js']
    //     }
    //   }
    // }
    uglify: {
      options: {
        banner: '/*! 注释信息 */'
      },
      my_target: {
        files: [{
          expand: true,
          cwd: 'src',
          src: '**/*.js',
          dest: 'dest'
        }]
      }
    },
    requirejs: {
      compile: {
        "options": {
          "baseUrl": "./",
          "name": 'src/test02.js',
          "paths": {
            "$": "src/zepto",
            "_": "src/underscore",
            "B": "src/backbone",
            "Test": "src/Test01"
          },
          "include": [
            "$",
            "_",
            "B",
            "Test"
          ],
          "out": "dest/libs.js"
        }
      }
    },
    cssmin: {
      //文件头部输出信息
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
        //美化代码
        beautify: {
          //中文ascii化，非常有用！防止中文乱码的神配置
          ascii_only: true
        }
      },
      compress: {
        files: {
          'dest/car.min.css': [
          "src/car.css",
          "src/car01.css"
        ]
        }
      }
    },
    copy: {
      main: {
        flatten: true,
        //    filter: 'isFile',
        // expand: true, // 不想复制文件夹只要文件
        src: 'src/*.js',
        // dest: 'dest/',
        dest: 'd:/common/',
      }
    },
  });

  // 加载提供"uglify"任务的插件
  // grunt.loadNpmTasks('grunt-contrib-uglify');

  // grunt.loadNpmTasks('grunt-contrib-concat');

  grunt.loadNpmTasks('grunt-contrib-requirejs');

  // grunt.loadNpmTasks('grunt-contrib-jshint');

  grunt.loadNpmTasks('grunt-contrib-cssmin');

  grunt.loadNpmTasks('grunt-contrib-copy');

  grunt.registerTask('build', 'require demo', function () {

    //第一步，读取配置信息
    var cfg = grunt.file.readJSON('cfg.json');
    cfg = cfg.requirejs;
    // console.log(cfg)
    grunt.config.set('requirejs', { test: cfg });

    //第二步，设置参数
    grunt.log.debug('参数：' + JSON.stringify(grunt.config()));

    //第三步跑任务
    grunt.task.run(['requirejs']);
    
  });
  //为了介绍自定义任务搞了一个这个
  // grunt.registerTask('build', 'require demo', function () {
  //   //任务列表
  //   var tasks = ['requirejs'];
  //   //源码文件
  //   var srcDir = 'src';
  //   //目标文件
  //   var destDir = 'dest';
  //   //设置参数
  //   grunt.config.set('config', {
  //     srcDir: srcDir,
  //     destDir: destDir
  //   });
  //   //设置requireJs的信息
  //   var taskCfg = grunt.file.readJSON('gruntCfg.json');
  //   var options = taskCfg.requirejs.main.options,
  //       platformCfg = options.web,
  //       includes = platformCfg.include,
  //       paths = options.paths;
  //   var pos = -1;
  //   var requireTask = taskCfg.requirejs;
  //   options.path = paths;
  //   options.out = platformCfg.out;
  //   options.include = includes;
  //   //运行任务
  //   grunt.task.run(tasks);
  //   grunt.config.set("requirejs", requireTask);
  // });

  // 默认任务
  grunt.registerTask('default', ["cssmin"]);
}

// **************************************************
// module.exports = function (grunt) {

//   grunt.loadNpmTasks('grunt-contrib-requirejs');

//   //channel为频道名称，project为项目名称，这里对应gruntDemo，branch为其分支，默认与grunt目录为平行关系，佛则package.json里面应该有配置信息
//   grunt.registerTask('build', 'require demo', function (channel, project, branch) {

//     var path = './' + channel + '/' + project + branch;
//     grunt.log.debug('path: ' + path);

//     //第一步，读取配置信息
//     var cfg = grunt.file.readJSON(path + '/gruntCfg.json');
//     cfg = cfg.requirejs;

//     grunt.config.set('config', {
//       srcDir: path,
//       destDir: path + '/dest'
//     });

//     grunt.config.set('requirejs', { main: cfg });

//     //第二步，设置参数
//     grunt.log.debug('param: ' + JSON.stringify(grunt.config()));

//     //第三步跑任务
//     grunt.task.run(['requirejs']);

//   });

//   grunt.registerTask('default', 'test demo', ['build', 'copy']);

// }


// ****************************

// module.exports = function (grunt) {

//   grunt.loadNpmTasks('grunt-contrib-requirejs');

//   //type 打包app包还是web包，channel为频道名称，project为项目名称，这里对应gruntDemo，branch为其分支，默认与grunt目录为平行关系，佛则package.json里面应该有配置信息
//   grunt.registerTask('build', 'require demo', function (type, channel, project, branch) {

//     var path = './' + channel + '/' + project + branch;
//     grunt.log.debug('path: ' + path);

//     //第一步，读取配置信息
//     var cfg = grunt.file.readJSON(path + '/gruntCfg.json');
//     cfg = cfg.requirejs.options;

//     grunt.config.set('config', {
//       srcDir: path,
//       destDir: path + '/dest'
//     });

//     grunt.log.debug('param: ' + JSON.stringify(cfg));
//     grunt.log.debug('param: ' + cfg[type]['include']);


//     var taskCfg = {};
//     taskCfg.options = {};
//     taskCfg.options.baseUrl = cfg.baseUrl;
//     taskCfg.options.paths = cfg.paths;
//     taskCfg.options['include'] = cfg[type]['include'];
//     taskCfg.options.out = cfg[type].out;


//     grunt.config.set('requirejs', { main: taskCfg });

//     //第二步，设置参数
//     grunt.log.debug('param: ' + JSON.stringify(grunt.config()));

//     //第三步跑任务
//     grunt.task.run(['requirejs']);

//   });

//   grunt.registerTask('default', 'test demo', ['build', 'copy']);

// }

// **************************************************************************

// module.exports = function (grunt) {
//   grunt.loadNpmTasks('grunt-contrib-requirejs');
//   //为了介绍自定义任务搞了一个这个
//   grunt.registerTask('build', 'require demo', function () {
//     //任务列表
//     var tasks = ['requirejs'];
//     //源码文件
//     var srcDir = 'src';
//     //目标文件
//     var destDir = 'dest';
//     //设置参数
//     grunt.config.set('config', {
//       srcDir: srcDir,
//       destDir: destDir
//     });
//     //设置requireJs的信息
//     var taskCfg = grunt.file.readJSON('gruntCfg.json');
//     var options = taskCfg.requirejs.main.options,
//         platformCfg = options.web,
//         includes = platformCfg.include,
//         paths = options.paths;
//     var pos = -1;
//     var requireTask = taskCfg.requirejs;
//     options.path = paths;
//     options.out = platformCfg.out;
//     options.include = includes;
//     //运行任务
//     grunt.task.run(tasks);
//     grunt.config.set("requirejs", requireTask);
//   });
// }